# 导入models让程序知道有models文件
from flask import current_app

from info import create_app, db, models
from flask_migrate import Migrate, MigrateCommand
from flask_script import Manager

# 获取app应用程序对象,
from info.models import User

app = create_app("product")

# 创建Migrate对象,关联app,db
Migrate(app, db)

# 创建Manager对象,关联app
manager = Manager(app)

# 给manager对象添加操作命令
manager.add_command("db", MigrateCommand)


# 创建管理员函数
# manager.option中有三个参数
# (第一个参数是用来传递的参数名,
# 第二个参数是用来解释前面参数名的含义的,
# 第三个参数是用来传递到函数的形式参数
@manager.option("-u", "-username", dest="username")
@manager.option("-p", "-password", dest="password")
def create_superuser(username, password):

    # 1.创建管理员对象
    user = User()

    # 2.设置属性
    user.nick_name = username
    user.password = password
    user.mobile = username
    user.is_admin = True

    # 3.添加到数据库中
    try:
        db.session.add(user)
        db.session.commit()
    except Exception as e:
        current_app.logger.error(e)
        db.session.rollback()
        return "创建失败"
    return "创建成功"

"""
TODO:还没有做完的信息，做个标记
"""
if __name__ == '__main__':
    manager.run()
